
const sqlite3 = require('sqlite3').verbose(); // 引入 sqlite3



  // 初始化 SQLite3 数据库
  const db = new sqlite3.Database('./dao/book_manager.db');
  
  // 查询并输出 SQLite 版本号
  db.get('SELECT SQLITE_VERSION() as version', (err, row) => {
    if (err) {
      console.error('查询 SQLite 版本号出错:', err);
    } else {
      console.log(`当前 SQLite 版本号: ${row.version}`);
    }
  });

  db.serialize(() => {
    // 创建用户表
    db.run(`
      CREATE TABLE IF NOT EXISTS users (
        user_id INTEGER PRIMARY KEY AUTOINCREMENT,
        username TEXT UNIQUE NOT NULL,
        password_hash TEXT NOT NULL,
        realname TEXT UNIQUE NOT NULL,
        created_at TIMESTAMP DEFAULT ( datetime('now', 'localtime') ),
        updated_at TIMESTAMP DEFAULT ( datetime('now', 'localtime') )
      )
    `);

    // 创建图书表
    db.run(`
      CREATE TABLE IF NOT EXISTS books (
        book_id INTEGER PRIMARY KEY AUTOINCREMENT,
        isbn TEXT UNIQUE NOT NULL,
        title TEXT NOT NULL,
        author TEXT NOT NULL,
        publisher TEXT,
        publish_date TEXT,
        stock INTEGER DEFAULT 0,
        created_by INTEGER,
        created_at TIMESTAMP DEFAULT ( datetime('now', 'localtime') ),
        updated_at TIMESTAMP DEFAULT ( datetime('now', 'localtime') )
      )
    `);

    // 插入登录人数据，修改此处，不指定使用默认值的列
    db.run(`
      INSERT INTO users (username, password_hash, realname) VALUES('user','e10adc3949ba59abbe56e057f20f883e','李四');
    `);

    // 插入40本测试书籍数据
    db.run(`
      INSERT OR IGNORE INTO books (isbn, title, author, publisher, publish_date, stock) VALUES
      ('9787115352468', 'Go语言编程', '许式伟', '人民邮电出版社', '2012-08-01', 10),
      ('9787115470667', 'Go Web编程', '谢孟军', '人民邮电出版社', '2018-06-01', 8),
      ('9787302518521', 'Go语言高级编程', '柴树杉', '清华大学出版社', '2019-07-01', 5),
      ('9787121319363', 'Go语言实战', '威廉·肯尼迪', '电子工业出版社', '2017-03-01', 7),
      ('9787115537971', 'Go语言设计模式', '马里奥·卡斯特罗', '人民邮电出版社', '2020-05-01', 6),
      ('9787115523660', 'Go语言并发之道', '凯瑟琳·考克斯-博德', '人民邮电出版社', '2019-11-01', 9),
      ('9787121383982', 'Go语言核心编程', '李文塔', '电子工业出版社', '2018-09-01', 12),
      ('9787115485778', 'Go语言从入门到精通', '明日科技', '人民邮电出版社', '2018-05-01', 15),
      ('9787302455109', 'Go语言学习笔记', '雨痕', '清华大学出版社', '2016-12-01', 8),
      ('9787115472944', 'Go语言编程之旅', '陈剑煜', '人民邮电出版社', '2019-04-01', 11),
      ('9787115555425', 'Go语言极简一本通', '欢喜', '人民邮电出版社', '2021-03-01', 14),
      ('9787121407084', 'Go语言开发实战', '传智播客', '电子工业出版社', '2019-08-01', 10),
      ('9787302468383', 'Go语言编程入门与算法实践', '黄靖钧', '清华大学出版社', '2018-11-01', 7),
      ('9787115563529', 'Go语言高并发与微服务实战', '郑子颖', '人民邮电出版社', '2021-06-01', 5),
      ('9787302480385', 'Go语言Web开发实战', '谢孟军', '清华大学出版社', '2019-09-01', 8),
      ('9787115483101', 'Go语言实战开发', '杨文', '人民邮电出版社', '2018-03-01', 9),
      ('9787121359348', 'Go语言编程从入门到实践', '李宁', '电子工业出版社', '2019-05-01', 6),
      ('9787302478382', 'Go语言核心36讲', '郝林', '清华大学出版社', '2019-02-01', 12),
      ('9787115563520', 'Go语言微服务架构实战', '郑子颖', '人民邮电出版社', '2021-01-01', 8),
      ('9787302480386', 'Go语言区块链应用开发', '谢孟军', '清华大学出版社', '2020-07-01', 5),
      ('9787115483102', 'Go语言分布式系统', '杨文', '人民邮电出版社', '2020-03-01', 7),
      ('9787121359349', 'Go语言云原生开发', '李宁', '电子工业出版社', '2021-05-01', 9),
      ('9787302468384', 'Go语言性能优化', '郝林', '清华大学出版社', '2020-11-01', 6),
      ('9787115563521', 'Go语言网络编程', '郑子颖', '人民邮电出版社', '2021-04-01', 10),
      ('9787302480387', 'Go语言机器学习', '谢孟军', '清华大学出版社', '2020-09-01', 4),
      ('9787115483103', 'Go语言大数据处理', '杨文', '人民邮电出版社', '2021-02-01', 8),
      ('9787121359350', 'Go语言安全编程', '李宁', '电子工业出版社', '2017-07-01', 5),
      ('9787302468385', 'Go语言游戏开发', '郝林', '清华大学出版社', '2020-12-01', 7),
      ('9787115563522', 'Go语言物联网开发', '郑子颖', '人民邮电出版社', '2021-08-01', 6),
      ('9787302480388', 'Go语言人工智能实践', '谢孟军', '清华大学出版社', '2021-01-01', 9),
      ('9787115483104', 'Go语言爬虫开发', '杨文', '人民邮电出版社', '2021-03-01', 11),
      ('9787121359351', 'Go语言自动化测试', '李宁', '电子工业出版社', '2021-06-01', 8),
      ('9787302468386', 'Go语言DevOps实践', '郝林', '清华大学出版社', '2021-04-01', 7),
      ('9787115563523', 'Go语言容器技术', '郑子颖', '人民邮电出版社', '2021-09-01', 5),
      ('9787302480389', 'Go语言服务器开发', '谢孟军', '清华大学出版社', '2021-02-01', 10),
      ('9787115483105', 'Go语言数据库编程', '杨文', '人民邮电出版社', '2021-05-01', 8),
      ('9787121359352', 'Go语言GUI开发', '李宁', '电子工业出版社', '2021-08-01', 6),
      ('9787302480987', 'Go语言移动开发', '郝林', '清华大学出版社', '2021-07-01', 4),
      ('9787115563524', 'Go语言系统编程', '郑子颖', '人民邮电出版社', '2021-10-01', 9),
      ('9787302480390', 'Go语言编译器开发', '谢孟军', '清华大学出版社', '2021-03-01', 7);
    `);

    console.log('SQLite3 database, tables and initial data initialized.');
  });
  
  db.close();




